package com.youlai.boot.core.tenant.context;

import lombok.extern.slf4j.Slf4j;

/**
 * 租户上下文持有者
 * 使用 ThreadLocal 存储当前线程的租户ID
 *
 * 【源自原多租户项目的 DBContextHolder.java】
 */
@Slf4j
public class TenantContextHolder {

    private static final ThreadLocal<Long> TENANT_ID_HOLDER = new ThreadLocal<>();

    /**
     * 设置当前租户ID
     */
    public static void setTenantId(Long tenantId) {
        log.debug("设置租户ID: {}", tenantId);
        TENANT_ID_HOLDER.set(tenantId);
    }

    /**
     * 获取当前租户ID
     */
    public static Long getTenantId() {
        return TENANT_ID_HOLDER.get();
    }

    /**
     * 清除租户ID
     */
    public static void clear() {
        log.debug("清除租户ID");
        TENANT_ID_HOLDER.remove();
    }

    /**
     * 判断是否有租户上下文
     */
    public static boolean hasTenantId() {
        return TENANT_ID_HOLDER.get() != null;
    }
}
